package com.studerb.service.interfaces;

import java.util.concurrent.Callable;
import java.util.concurrent.Future;

import com.studerb.tasks.interfaces.ITask;

/**
 * This is the task service that manages all tasks - active, scratched, and
 * failed. The task service should send
 * {@link com.studerb.events.TaskServiceEvent TaskServiceEvents} when tasks are
 * added/removed from the different queues. Tasks that need to actived should be
 * added to the active task queue.
 * 
 */
public interface ITaskService extends IService {
	boolean addTask(ITask task);

	int getActiveTasksSize();

	int getFailedTasksSize();

	int getScratchTasksSize();

	boolean moveToScratch(ITask task);

	Future submit(Callable command);
}
